package com.tz.oa.sysmanage.udtil;

/**
 * Created by lianle on 17/1/4.
 */
public enum ResultCodeEnum {
    /**
     * 成功
     **/
    SUCCESS(0, "成功"),

    /**
     * 400  失败（客户端原因造成）
     */
    PARAMETER_ERROR(400, "参数错误"),

    /**
     * 401  失败（客户端原因造成）
     */
    PARAMETER_ERROR_CONVERT(401, "参数转换异常，请确认参数类型"),


    /**
     * 401  失败（客户端原因造成）
     */
    PARAMETER_ERROR_MISSING(402, "参数丢失或参数名错误，请重试！"),

    /**
     * 500 失败（服务端原因造成）
     */
    ERROR(500, "服务器内部异常"),

    /***********************业务相关*******************************************************/

    /**
     * 员工相关
     **/
    STAFF_DELETE_ERROR_IN_GROUP(100001, "操作失败，绑定组关系,请先删除组关联关系"),
    STAFF_DELETE_ERROR_IN_ROLE(100002, "操作失败，权限绑定,请先删除权限关联关系"),
    STAFF_DELETE_ERROR_IN_CALL(100003, "操作失败，电话技能绑定,请先删除电话技能关联关系"),
    STAFF_DELETE_ERROR_IN_CHAT(100004, "操作失败，会话技能绑定,请先删除聊天技能关联关系"),
    STAFF_DELETE_ERROR_IN_FLOW(100005, "操作失败，流程绑定,请先删联关系"),

    STAFF_SAVE_TYPE_ERROR(100006, "员工类型参数错误"),
    STAFF_SAVE_NAME_ERROR(100007, "员工姓名参数错误"),
    STAFF_SAVE_EMAIL_ERROR(100008, "员工邮箱参数错误"),
    STAFF_SAVE_MOBILE_ERROR(100009, "员工手机号参数错误"),
    STAFF_SAVE_DEPARTMENT_ID_ERROR(100010, "员工部门id参数错误"),
    STAFF_SAVE_HAITUN_DEPARTMENT_ID_ERROR(100010, "海豚部门id参数错误"),
    STAFF_SAVE_ID_ERROR(100011, "员工id参数错误"),
    STAFF_LOGIN_NAME_IS_EMPTY(100020, "员工账号不能为空"),

    STAFF_ID_NOT_EXIST(100012,"员工不存在或者已被删除"),

    /**
     * 工作组相关
     **/
    WORKGROUP_SAVE_NAME_EMPTY(200001, "新增工作组,组名不能为空"),
    WORKGROUP_SAVE_NAME_DUPLICATED(200002, "新增工作组,组名重复"),
    WORKGROUP_UPDATE_ID_EMPTY(200003, "编辑工作组,主键ID不能为空"),
    WORKGROUP_UPDATE_NAME_EMPTY(200004, "编辑工作组,组名不能为空"),
    WORKGROUP_UPDATE_NAME_DUPLICATED(200005, "编辑工作组,组名重复"),
    WORKGROUP_NOT_EXIST(200006, "工作组不存在"),
    WORKGROUP_ADD_MEMBER_EMPTY(200007, "添加员工失败,员工列表不能为空"),
    WORKGROUP_DELETE_MEMBER_EMPTY(200008, "删除员工失败,员工列表不能为空"),
    WORKGROUP_DELETE_USING_BY_FLOW(200009, "删除工作组失败,被流程使用"),

    WORKGROUP_ID_NOT_EXIST(200010,"操作失败，工作组id不存在或已删除"),
    WORKGROUP_IDS_NULL(200011,"操作失败，工作组ids集合不能为空"),

    /**
     * 部门相关
     **/
    DEPT_SAVE_PARENT_EMPTY(210001, "新增部门,上级部门不能为空"),
    DEPT_SAVE_PARENT_NOT_EXIST(210002, "新增部门,上级部门不存在"),
    DEPT_SAVE_NAME_EMPTY(210003, "新增部门,名称不能为空"),
    DEPT_SAVE_NAME_DUPLICATED(210004, "该部门在当前父部门下已存在，请重新命名"),
    DEPT_ROOT_DUPLICATED(210005, "一级部门,'集团'只能有一个."),

    DEPT_UPDATE_EMPTY(210006, "编辑部门,对象不能为空."),
    DEPT_UPDATE_NEW_PARENT_ERROR(210007, "编辑部门,新上级部门不可用."),
    DEPT_UPDATE_NEW_PARENT_NOT_EXIST(210008, "编辑部门,新上级部门不存在"),
    DEPT_UPDATE_NAME_EMPTY(210009, "编辑部门,名称不能为空"),
    DEPT_UPDATE_NAME_DUPLICATED(210010, "该部门在当前父部门下已存在，请重新命名"),

    DEPT_NOT_EXIST(210011, "部门不存在"),
    DEPT_DELETE_HAS_CHILD_DEPT(210012, "删除部门失败,存在子部门"),
    DEPT_DELETE_HAS_STAFF(210013, "删除部门失败,存在员工"),

    /* 角色相关 以600000开始*/
    ROLE_SAVE_CHECKNAMEUNIQUE(600001, "操作失败，角色名称重复"),
    ROLE_DEL_ID_ERROR(600002, "操作失败，获取角色ID异常"),
    ROLE_INFO_ERROR(600003, "操作失败，获取角色信息异常"),
    ROLE_REL_VAL(600005, "操作失败，获取参数信息异常"),
    ROLE_REL_FUN_UNIQUE(600006, "操作失败，已存在角色和功能绑定关系"),
    ROLE_REL_STAFF_UNIQUE(600007, "操作失败，已存在角色和人员绑定关系"),
    ROLE_REL_STAFF_UNEXIST(600012, "操作失败，所选员工信息无效"),
    ROLE_REL_DEL_STAFF(600008, "操作失败，当前角色已和人员关联，请先解除关联关系"),
    ROLE_REL_DEL_FUN(600009, "操作失败，当前角色已和功能关联，请先解除关联关系"),
    ROLE_REL_FUN_UNDEFINE(600010, "操作失败，未获得功能信息，匹配失败!"),
    ROLE_INFO_UNDEFINE(600011, "操作失败，系统未获取到正确的角色信息"),
    ROLE_IDS_NULL(600012,"操作失败,角色ids不能为空"),
    ROLE_ID_NOT_EXIST(600013,"操作失败，角色不存在或已被删除"),
    ROLE_NOT_EXIST(600020, "角色不存在"),
    ROLE_ADD_STAFFS_IS_EMPTY(600021, "角色添加员工列表不能为空"),

    FUNCTION_INFO_UNDEFINE(700011, "操作失败，未获得正确的功能信息"),
    FUNCTION_INFO_UNIQUE(700012, "操作失败，功能Code已存在，请检查后重试"),
    FUNCTION_DELETE_RELATION(700013, "操作失败，已存在角色和功能绑定关系"),
    FUNCTION_TYPE_UN_FIND(700014, "操作失败，未匹配到正确的功能类型枚举"),
    FUNCTION_URL_QUERY_PARAM_ERROR(700015, "操作失败，未获得正确的方法路径"),

    INTERFACE_INFO_UNDEFINE(900011,"操作失败，未获得正确的接口信息"),
    INTERFACE_INFO_UNIQUE(900012, "操作失败，接口标识已存在，请检查后重试"),
    INTERFACE_DELETE_RELATION(900013, "操作失败，已存在接口和功能绑定关系"),
    INTERFACE_FUNCTION_RELATION_ERROR(900014, "操作失败，获取【接口-功能】关联关系异常"),



    /**
     * call技能组相关 以4开头
     */
    CALL_DEL_ERROR(400001, "操作失败，所选技能组下存在人员，不能被删除，请先删除技能组下的人员"),
    CALL_RELATION_SAVE(400002, "操作失败，该人员已下该技能组下存在"),
    CALL_NAME_ALREADY(400003, "操作失败，电话技能组名称已存在"),
    CALL_ID_NULL(400004, "操作失败，电话技能组ID不能为空"),
    CALL_IDS_NULL(400005, "操作失败，电话技能组IDs不能为空"),
    CALL_NAME_NULL(400006, "操作失败，电话技能组名称不能为空"),
    CALL_RELATION_STAFFID_NULL(400007, "操作失败，员工ID不能为空"),
    CALL_RELATION_STAFFIDS_NULL(400008, "操作失败，员工IDs不能为空"),
    CALL_STAFFIDS_INEQUALITY(400009, "操作失败，所添加的员工中存在已被删除的员工"),
    CALL_ADD_STAFF(400010, "操作失败，无法新增PASS平台员工"),
    CALL_NOT_EXIST(400011, "操作失败，电话技能组不存在或已删除"),
    CALL_ADD_STAFFS_IS_EMPTY(400020, "操作失败，电话技能组添加成员列表不能为空"),

    /**
     * 统计业务管理相关 以41开头
     */
    STATISTICS_BUSINESS_MANAGE_NAME_ALREADY(410001, "操作失败，统计业务管理名称已存在"),
    STATISTICS_BUSINESS_MANAGE_NOT_EXIST(410002, "操作失败，统计业务管理不存在或已删除"),
    STATISTICS_BUSINESS_MANAGE_DEL_FOR_CALL_SKILL_ERROR(410003, "删除失败，所选统计业务下存在电话技能组引用，不能被删除"),
    STATISTICS_BUSINESS_MANAGE_DEL_FOR_CHAT_SKILL_ERROR(410004, "删除失败，所选统计业务下存在会话技能组引用，不能被删除"),
    STATISTICS_BUSINESS_MANAGE_DEL_FOR_DEPARTMENT_ERROR(410005, "删除失败，所选统计业务下存在部门引用，不能被删除"),

    /**
     * CHAT技能组相关 以5开头
     */
    CHAT_RELATION_GROUP_NOT_EXIST(500001, "操作失败，所选会话技能组不存在或已删除"),
    CHAT_RELATION_THIRD_API_ERROR(500002, "操作失败，调用CHAT系统API时返回异常"),
    CHAT_RELATION_SAVE_ERROR(500003, "操作失败，往会话技能组中批量添加人员失败"),
    CHAT_RELATION_UNIQUE_NAME_ERROR(500004, "操作失败，会话技能组名称已存在"),
    CHAT_RELATION_CHAT_SKILLID_EXISTS_BINDING(500005, "操作失败，skillId(chat系统技能id)已绑定了其它技能组"),
    CHAT_IDS_NULL(500006,"操作失败,会话技能IDS不能为空"),
    CHAT_ID_NOT_EXIST(500007,"操作失败，会话技能组不存在或者已删除"),
    CHAT_ADD_STAFFS_IS_EMPTY(500020, "操作失败，会话技能增加成员列表不能为空"),
    CHAT_ID_NULL(500021, "操作失败，电话技能组ID不能为空"),

    /** 流程节点配置相关（包括状态配置） 以6开头*/
    CASE_STATUS_DOES_NOT_EXISTS(600001,"状态不存在或已被删除"),
    CASE_STATUS_NAME_EXISTS(600002,"该状态已经存在"),
    CASE_STATUS_NAME_EMPTY(600003,"状态名为空"),
    CASE_STATUS_DELETE_EXISTING_FLOWS(600004,"删除失败，尚有流程与该状态相关联"),
    CASE_STATUS_DELETE_ILLEGAL_STATUS(600005,"删除失败，不能删除『创建中』和『已结案』两个状态"),
    CASE_STATUS_ADD_INVALID_ARGUMENT(600006,"状态字段格式异常"),
    CASE_STATUS_DATABASE_ERROR(600007,"数据库操作异常"),
    CASE_STATUS_ALREADY_EXISTS(600008,"状态已存在"),
    CASE_STATUS_UPDATE_ILLEGAL_STATUS(600005,"更新失败，不能更新『创建中』和『已结案』两个状态"),
    CASE_STATUS_ID_EMPTY(600006,"状态ID不能为空"),

    FLOW_NODE_GROUP_LIST_EMPTY(600007,"处理组不能为空"),

//    FLOW_NODE_GROUP_NODEID_EMPTY(600007,"流程节点ID不能为空"),
    FLOW_ID_EMPTY(600008,"流程ID不能为空"),
    FLOW_NODE_LIST_EMPTY(600009,"流程节点不能为空"),
    FLOW_NODE_ID_EMPTY(600010,"流程节点ID不能为空"),
    NODE_OPERATION_LIST_EMPTY(600011,"操作不能为空"),
    NODE_OPERATION_ID_EMPTY(600012,"操作ID不能为空"),
    NODE_OPERATION_NAME_EMPTY(600013,"操作名称不能为空"),
    FLOW_NODE_GROUP_ID_EMPTY(600014,"处理组ID不能为空"),

    /**
     * 流程节点总体配置 61开头
     */
    FLOW_QUERY_PAGE_PARAM_ERROR(610001, "流程查询, 分页参数错误"),

    FLOW_SAVE_EMPTY(610011, "新增流程, 对象不能为空"),
    FLOW_SAVE_NAME_EMPTY(610012, "新增流程, 名称不能为空"),
    FLOW_SAVE_NAME_DUPLICATED(610013, "新增流程, 名称不能重复"),

    FLOW_UPDATE_EMPTY(610021, "编辑流程, 对象不能为空"),
    FLOW_UPDATE_NAME_EMPTY(610022, "新增流程, 名称不能为空"),
    FLOW_UPDATE_NAME_DUPLICATED(610023, "新增流程, 名称不能重复"),

    FLOW_NOT_EXIST(610031, "流程不存在"),

    FLOW_DELETE_USED_BY_CASETYPE(610041, "流程删除失败, 已被工单类型关联."),

    FLOW_GRAPH_NODE_ILLEGAL(690001, "流程配置, 节点非法(无法由起点到达或无法到达终点)"),

    FLOW_ACTION_NEXT_NODE_CONFIG_EMPTY(690002, "流程配置, 节点流转动作, 配置不能为空。"),
    FLOW_ACTION_NEXT_NODE_NOT_NUMERIC(690003, "流程配置, 节点流转动作, 指定的下一状态ID不是数字。"),
    FLOW_ACTION_NEXT_NODE_NOT_UNIQUE(690004, "流程配置, 节点流转动作, 指定的下一状态多于一个。"),

    FLOW_ACTION_CONFIG_EMPTY(699990, "流程配置, 动作配置, 配置不能为空。"),
    FLOW_ACTION_CONFIG_FIELD_NOT_EXIST(699991, "流程配置, 动作配置, 字段名不能为空。"),
    FLOW_ACTION_CONFIG_FIELD_PLACEHOLDER_NOT_EXIST(699992, "流程配置, 动作配置, 字段中占位符不合法。"),
    FLOW_ACTION_FIELD_DATA_TYPE_NOT_MATCH(699999, "流程配置, 动作配置, 字段数据类型不匹配。"),

    /** 工单类型配置相关（包括优先级配置和问题关联） 以7开头*/
    /**
     * 优先级 以70开头
     **/
    PRIORITY_NAME_DUPLICATED(700001, "优先级名称已存在"),
    PRIORITY_DELETE_CASE_TYPE_EXIST(700002, "删除优先级失败,存在关联的工单类型"),


    PRIORITY_CASE_TYPE_NAME_UNIQUE(700050, "操作失败，工单类型名称已存在"),
    PRIORITY_CASE_TYPE_PRIORITY_DEFAULT_EMPTY(700051, "操作失败，工单类型关联的优先级没有选择默认值"),
    PRIORITY_CASE_TYPE_PRIORITY_DEFAULT_MORE_THAN_ONE(700052, "操作失败，工单类型关联的优先级只能选择一个默认值"),
    PRIORITY_CASE_TYPE_DETAIL_VIEW_ERROR(700053, "操作失败，工单类型绑定的详情页不存在或已删除"),
    PRIORITY_CASE_TYPE_POPUP_VIEW_ERROR(700054, "操作失败，工单类型绑定的弹屏页不存在或已删除"),
    PRIORITY_CASE_TYPE_FLOW_ERROR(700055, "操作失败，工单类型绑定的流程不存在或已删除"),
    PRIORITY_CASE_TYPE_ERROR(700056, "操作失败，工单类型类型对象为空"),
    PRIORITY_CASE_TYPE_PRIORITY_ERROR(700057, "操作失败，工单类型没有关联优先级"),
    PRIORITY_CASE_TYPE_NOT_EXIST(700058, "操作失败，工单类型不存在或已删除"),
    PRIORITY_CASE_TYPE_RELATION_QUESTION(700059, "操作失败，工单类型关联着问题"),
    PRIORITY_CASE_TYPE_RELATION_PRIORITY(700060, "操作失败，绑定的优先级ID:%s不存在或已删除"),
    CASE_TYPE_QUESTION_EMPTY(700061, "操作失败，工单类型没有关联问题"),
    CASE_TYPE_QUESTION_EXIST(700062, "操作失败，工单类型关联的问题在C端未被删除"),

    QUESTION_THIRD_API_ERROR(700070, "操作失败，调用问题系统API时返回异常"),

    /** 界面配置相关（字段配置相关） 以8开头*/
    VIEW_INFO_ERROR(800001, "操作失败，获取界面信息异常"),
    VIEW_NAME_UNIQUE(800002, "操作失败，界面名称冲突"),
    VIEW_ID_ERROR(800003, "操作失败，获取界面ID异常"),
    VIEW_REL_VAL(800004, "操作失败，获取参数信息异常"),
    VIEW_COPY_ERROR(800005, "操作失败，复制界面源异常"),
    VIEW_VAL_NAME(800006, "操作失败，【界面名称】不得为空，且长度不得大于32位字符"),
    VIEW_VAL_DESC(800007, "操作失败，【描述信息】长度不得大于512位字符"),
    VIEW_VAL_CONF(800008, "操作失败，【页面布局】长度不得大于65535位字符"),
    VIEW_VAL_BIZS(800009, "操作失败，【业务线集合】长度不得大于512位字符"),
    VIEW_VAL_VTYPE(800010, "操作失败，【界面类型】长度不得大于10位字符"),
    VIEW_VAL_RELCASE(800011,"操作失败，所选界面已和工单类型关联，请先解除关联关系"),
    VIEW_VAL_JSONCONFIG(800012,"操作失败，界面配置信息异常"),

    /**
     * 外部电话系统相关 以9开头
     */
    CALL_SYSTEM_TOKEN(900001, "获取TOKEN失败"),
    CALL_SYSTEM_ADD_SKILL(900002, "电话系统新增技能点绑定失败"),
    CALL_SYSTEM_DEL_SKILL(900003, "电话系统删除技能点绑定失败"),
    CALL_SYSTEM_ADD_STAFF(900004, "电话系统技能点中添加人员失败"),
    CALL_SYSTEM_DEL_STAFF(900005, "电话系统技能点中删除人员失败"),



    /**
     * 字段校验以1000001开头
     */
    FIELD_DUPLICATE_NAME(1000001, "字段名称不能重复"),

    /**
     * 调用RPC服务异常
     */
    PIGEDON_SERVER_ERROR(2000001, "调用RPC服务异常"),

    /** 用户标签配置相关（包括状态配置） 以3000001开头*/
    USER_TAG_NAME_EXISTS(3000001,"该用户标签名称已经存在"),
    USER_TAG_QUERY_PAGE_PARAM_ERROR(3000002, "用户标签配置查询, 分页参数错误"),
    USER_TAG_ADD_INVALID_ARGUMENT(3000003,"查询用户标签关键字不可为空"),

    /** 分单优先级 以62开头 **/
    ALLOCATE_PRIORITY_FIRST_CATEGORY_DUPLICATED(620001, "已存在，不可重复添加"),
    ALLOCATE_PRIORITY_DETAIL_LIMIT_PARAM_ERROR(620002, "阈值区间必须是整数"),
    ALLOCATE_PRIORITY_DETAIL_LIMIT_RANGE_ERROR(620003, "区间范围冲突，添加失败"),
    ALLOCATE_PRIORITY_FAQ_EXISTS(620004, "FAQ已存在"),

    /**
     * 501 失败 session丢失，需重新登录
     */
    SESSION_LOGOUT(501, "操作超时，请重新登录"),

    /**
     * 200 成功（RC表示ResponseCode）
     */
    RC_SUCCESS(200, "执行成功");

    private int code;
    private String msg;

    ResultCodeEnum(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

}
